package edu.cibertec.action;

import java.io.Reader;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;

import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;

import edu.cibertec.actionform.ProcesoForm;
import edu.cibertec.bean.BeanProceso;
import edu.cibertec.bean.BeanUsuario;

public class MantenimientoProcesosAction extends Action {
SqlMapClient sqlMap;
	
	public ActionForward execute ( ActionMapping mapping,
            ActionForm form,
            HttpServletRequest request,
            HttpServletResponse response)
            throws Exception {
		
    	try {
    		String resource = "SqlMapConfigApplication.xml";
    		Reader reader = Resources.getResourceAsReader (resource);
    		sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
    	} catch (Exception e) {
    		e.printStackTrace();
    		throw new RuntimeException ("Error cargando configuracion en RedireccionandoAction Cause: " + e);
    	}
    	 
		String forwardName = "failure";
		String parametro = request.getParameter("param1");
		String modo = request.getParameter("modo");
		int i = 0;
		if(modo.equals("insertar")){
			return this.insertarProceso(mapping, form, request, response);
		}
		if ( modo.equals("DELETE")){ 
			return this.eliminarProceso(mapping, form, request, response);
		}
		if(modo.equals("UPDATE")){
			return this.editarProceso(mapping, form, request, response);
		}
		if(modo.equals("update")){
			return this.updateProceso(mapping, form, request, response);
		}
		if ( i > 0 ) {
			forwardName = listaProcesos(request);
		}
		
		
		return mapping.findForward(forwardName);

}

	private ActionForward editarProceso(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		// TODO Auto-generated method stub
		return null;
	}

	private ActionForward updateProceso(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		// TODO Auto-generated method stub
		return null;
	}

	private String listaProcesos(HttpServletRequest request) throws SQLException {
		List listaProcesos = sqlMap.queryForList("getAllProcesos");
    	
    	if ( listaProcesos.size() > 0 ) {
    		System.out.println("**");
            HttpSession session = request.getSession();
            session.setAttribute("listaProceso",listaProcesos);
        	return "prueba";
        } else {
        	return "failure";
        }
	}
	

	public ActionForward insertarProceso ( ActionMapping mapping,
            ActionForm form,
            HttpServletRequest request,
            HttpServletResponse response)
            throws Exception {

		ProcesoForm frmproceso = (ProcesoForm)form;
		BeanProceso proceso = new BeanProceso();
		
		proceso.setCodDpto(proceso.getCodDpto());
		proceso.setCodUsuario(proceso.getCodUsuario());
		proceso.setNombre(proceso.getNombre());
		proceso.setDescripcion(proceso.getDescripcion());
		proceso.setFecha(proceso.getFecha());
		
		 int longitud = frmproceso.getCodTipoDoc().length;
         ArrayList listaTipo = new ArrayList();
         
         for (int i = 0; i < longitud; i++ ) {
        	 listaTipo.add(frmproceso.getCodTipoDoc()[i]);
        	 proceso.setListaTipo(listaTipo);
         }
	
		sqlMap.insert("insertProceso", proceso);
	
		ActionMessages errors = new ActionMessages();
		errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("registro.msg.ok"));

		return mapping.findForward("listar");
	}
	
	public ActionForward eliminarProceso(ActionMapping mapping,
			ActionForm form,
			HttpServletRequest request, 
			HttpServletResponse response)
			throws Exception {

		String codigo=request.getParameter("codigo");

		sqlMap.delete("eliminaProcesos", codigo);
		
		ActionMessages errors = new ActionMessages();
		errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("registro.msg.ok"));

		return mapping.findForward("listar");
		
	}
	
	
	
}